package edu.cibertec.action;

import java.util.ArrayList;
import java.util.Map;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import edu.cibertec.bean.BeanClienteDTO;
import edu.cibertec.bean.BeanDetalleMaestraDTO;
import edu.cibertec.bean.BeanEmpleadoDTO;
import edu.cibertec.bean.BeanMaestraDTO;
import edu.cibertec.bean.BeanUbigeoDTO;
import edu.cibertec.bean.ClienteDTO;
import edu.cibertec.service.DetalleMaestraService;
import edu.cibertec.service.EmpleadoService;
import edu.cibertec.service.MaestraService;
import edu.cibertec.service.UbigeoService;


@ParentPackage(value="CiberStudio")
public class EmpleadoAction extends ActionSupport{

	private static final long serialVersionUID = 1L;
	
	
	private BeanEmpleadoDTO empleado;
	private ArrayList<BeanEmpleadoDTO>listaempleado;
	
	private ArrayList<BeanDetalleMaestraDTO>tipoDocumentos1;
	private ArrayList<BeanDetalleMaestraDTO>Listaestadocivil;
	private ArrayList<BeanDetalleMaestraDTO>Listaestasexo;
	private ArrayList<BeanDetalleMaestraDTO>Listaestado;
	private ArrayList<BeanDetalleMaestraDTO> listacargo;

	private ArrayList<BeanMaestraDTO> listperfil;
	private ArrayList<BeanUbigeoDTO>listaubigeo;
	private BeanUbigeoDTO ubigeo;
	
	
	
	public Map<String, Object> session = ActionContext.getContext().getSession();
	private ArrayList<String> mensajes= new ArrayList<String>();
	
	//servicios
	EmpleadoService semp=new EmpleadoService();
	DetalleMaestraService svTipoDocumento=new DetalleMaestraService();
	UbigeoService serub=new UbigeoService();
	MaestraService mser=new MaestraService();
	
	
	@Action(value="/a_gestionEmpleado",results = {@Result(location = "t_gestionEmpleado", name = "success", type = "tiles")})
	public String listarCliente() throws Exception{	
		
		session.remove("keyMensajesError");
		session.remove("keyEmpleadoError");
		
		String var="";
//		if(empleado.getAppater().equals("")){
//			var=empleado.getNrodoc();
//		}
//		if(empleado.getNrodoc().equals("")){
//			var=empleado.getAppater();
//		}
		
		listaempleado=semp.buscarEmpleado(var);
		
		
		return SUCCESS;
	}
	
	
	@Action(value="/a_buscarEmpleado", results = {@Result(location = "t_gestionEmpleado", name = "success", type = "tiles")})
	public String buscarCliente() throws Exception{
		String var="";
		if(empleado.getAppater().equals("")){
			var=empleado.getNrodoc();
		}
		if(empleado.getNrodoc().equals("")){
			var=empleado.getAppater();
		}
		
		listaempleado=semp.buscarEmpleado(var);
		
		return SUCCESS;
	}
	
	
	@Action(value="/a_LinkNuevoEmp",results = {@Result(location = "t_nuevoEmp", name = "success", type = "tiles")})
	public String LinkNuevoEmp() throws Exception{	
		int vSexo=2;
		int vcivil=3;
		int vgrupo=1;//tipodoc en detallemaestr
		int vcargo=6;//tipodoc en detallemaestra
		int vestado=5;
		Listaestado=(ArrayList<BeanDetalleMaestraDTO>) svTipoDocumento.ListaCombos(vestado);
		Listaestadocivil=(ArrayList<BeanDetalleMaestraDTO>) svTipoDocumento.ListaCombos(vcivil);
		Listaestasexo=(ArrayList<BeanDetalleMaestraDTO>) svTipoDocumento.ListaCombos(vSexo);
		tipoDocumentos1=(ArrayList<BeanDetalleMaestraDTO>) svTipoDocumento.ListaTipodocumente();
		listacargo=(ArrayList<BeanDetalleMaestraDTO>) svTipoDocumento.ListaCombos(vcargo);
		listperfil= (ArrayList<BeanMaestraDTO>) mser.ListaPerfiles(vgrupo);
		
		if(session.get("keyMensajesError")!=null){
			@SuppressWarnings("unchecked")
			ArrayList<String> mensajitos=(ArrayList<String>)session.get("keyMensajesError");
			empleado=(BeanEmpleadoDTO)session.get("keyEmpleadoError");
			for (String x : mensajitos) {
				addActionError(x);
			}
			
			return SUCCESS;
		}
			setActionErrors(null);
		
		return SUCCESS;
	}
	
	@Action(value="/a_registrarEmpleado",results = {@Result(name = "success", type = "redirectAction", location = "a_gestionEmpleado"),
			@Result(location = "a_LinkNuevoEmp", name = "error", type = "redirectAction")})

	public String registrarEmpleado(){
		
		System.out.println(empleado);
		
//		if(validarCliente(cliente1)){
//			session.put("keyClienteError", cliente1);
//		return ERROR;
//		}
//		
		String valor=ERROR;
		int estado=0;
//		ClienteDTO cli=svCliente.buscarClientePorDNI(cliente1);
//		if(cli==null){
			
			BeanEmpleadoDTO obj=new BeanEmpleadoDTO();
			
	
			obj.setTipodoc(empleado.getTipodoc());
			obj.setNrodoc(empleado.getNrodoc());
			obj.setNombres(empleado.getNombres());
			obj.setAppater(empleado.getAppater());
			obj.setApmater(empleado.getApmater());
			obj.setCorreo(empleado.getCorreo());
			obj.setIdubigeo(empleado.getIdubigeo());
			obj.setDireccion(empleado.getDireccion());
			obj.setSexo(empleado.getSexo());
			obj.setFecnac(empleado.getFecnac());
			obj.setEstadocivil(empleado.getEstadocivil());
			obj.setEstado(empleado.getEstado());
			obj.setTelefono(empleado.getTelefono());
			obj.setCelular(empleado.getCelular());
			obj.setCargo(empleado.getCargo());
			obj.setLogin(empleado.getLogin());
			obj.setClave(empleado.getClave());
			obj.setIdPerfil(empleado.getIdPerfil());
						
			estado=semp.registrarEmpleado(obj);
			
			if(estado!=0){
				return SUCCESS;
			}
		
		return valor;
	}
	@Action(value="/a_Diractualizaremp", results = {@Result(location = "t_actualizarEmp", name = "success", type = "tiles")})
	public String actualizaremp() throws Exception{
		
		String estado=ERROR;
		int vSexo=2;
		int vcivil=3;
		int vgrupo=1;//tipodoc en detallemaestr
		int vcargo=6;//tipodoc en detallemaestra
		int vestado=5;
		Listaestado=(ArrayList<BeanDetalleMaestraDTO>) svTipoDocumento.ListaCombos(vestado);
		Listaestadocivil=(ArrayList<BeanDetalleMaestraDTO>) svTipoDocumento.ListaCombos(vcivil);
		Listaestasexo=(ArrayList<BeanDetalleMaestraDTO>) svTipoDocumento.ListaCombos(vSexo);
		tipoDocumentos1=(ArrayList<BeanDetalleMaestraDTO>) svTipoDocumento.ListaTipodocumente();
		listacargo=(ArrayList<BeanDetalleMaestraDTO>) svTipoDocumento.ListaCombos(vcargo);
		listperfil= (ArrayList<BeanMaestraDTO>) mser.ListaPerfiles(vgrupo);
		
		if(session.get("keyMensajesError")!=null){
			@SuppressWarnings("unchecked")
			ArrayList<String> mensajitos=(ArrayList<String>)session.get("keyMensajesError");
			empleado=(BeanEmpleadoDTO)session.get("keyEmpleadoError");
			for (String x : mensajitos) {
				addActionError(x);
			}
			return SUCCESS;
		}
		BeanEmpleadoDTO emp=
		semp.obtenerEmpleado(empleado);
//		return SUCCESS;
		if(emp!=null){
			empleado=emp;
			session.put("keyIdPersona", empleado.getIdpersona());
			estado=SUCCESS;
		}
		
		return estado;
	}
	
	@Action(value="/a_actualizarEmpleado",results = 
		{@Result(name = "success", type = "redirectAction", location = "a_gestionEmpleado"),
			@Result(location = "a_Diractualizaremp", name = "error", type = "redirectAction")})
	public String actualizarCliente(){
		
		System.out.println(empleado);
		
//		if(validarClienteActulizar(cliente1)){
//			session.put("keyClienteError", cliente1);
//			return ERROR;
//		}
//		
		int estado=0;
		String valor=ERROR;
		BeanEmpleadoDTO obj=new BeanEmpleadoDTO();
		obj.setIdpersona(empleado.getIdpersona());
		obj.setCodusu(empleado.getCodusu());
		obj.setCargo(empleado.getCargo());
		obj.setLogin(empleado.getLogin());
		obj.setClave(empleado.getClave());
		obj.setIdPerfil(empleado.getIdPerfil());
		
		obj.setTipodoc(empleado.getTipodoc());
		obj.setNrodoc(empleado.getNrodoc());
		obj.setNombres(empleado.getNombres());
		obj.setAppater(empleado.getAppater());
		obj.setApmater(empleado.getApmater());
		obj.setCorreo(empleado.getCorreo());
		obj.setIdubigeo(empleado.getIdubigeo());
		obj.setDireccion(empleado.getDireccion());
		obj.setSexo(empleado.getSexo());
		obj.setFecnac(empleado.getFecnac());
		obj.setEstadocivil(empleado.getEstadocivil());
		obj.setEstado(empleado.getEstado());
		obj.setTelefono(empleado.getTelefono());
		obj.setCelular(empleado.getCelular());
		
		
		
		
					
		estado=semp.actualizarEmpleado(obj);
		if(estado!=0){
			return SUCCESS;
		}
		return valor;
	}
	
	@Action(value="/a_Direliminar", results = {@Result(location = "t_gestionEmpleado", name = "success", type = "tiles")})
	public String Direliminar() throws Exception{

		BeanEmpleadoDTO x=new BeanEmpleadoDTO();
		x.setIdpersona(empleado.getIdpersona()); 
		
		semp.eliminarEmpleado(empleado);
		listaempleado=semp.buscarEmpleado("");

		
		return SUCCESS;
	
	}
	
	
	
	public BeanEmpleadoDTO getEmpleado() {
		return empleado;
	}
	public void setEmpleado(BeanEmpleadoDTO empleado) {
		this.empleado = empleado;
	}
	public ArrayList<BeanEmpleadoDTO> getListaempleado() {
		return listaempleado;
	}
	public void setListaempleado(ArrayList<BeanEmpleadoDTO> listaempleado) {
		this.listaempleado = listaempleado;
	}


	public ArrayList<BeanDetalleMaestraDTO> getTipoDocumentos1() {
		return tipoDocumentos1;
	}


	public void setTipoDocumentos1(ArrayList<BeanDetalleMaestraDTO> tipoDocumentos1) {
		this.tipoDocumentos1 = tipoDocumentos1;
	}


	public ArrayList<BeanDetalleMaestraDTO> getListaestadocivil() {
		return Listaestadocivil;
	}


	public void setListaestadocivil(ArrayList<BeanDetalleMaestraDTO> listaestadocivil) {
		Listaestadocivil = listaestadocivil;
	}


	public ArrayList<BeanDetalleMaestraDTO> getListaestasexo() {
		return Listaestasexo;
	}


	public void setListaestasexo(ArrayList<BeanDetalleMaestraDTO> listaestasexo) {
		Listaestasexo = listaestasexo;
	}


	public ArrayList<BeanDetalleMaestraDTO> getListaestado() {
		return Listaestado;
	}


	public void setListaestado(ArrayList<BeanDetalleMaestraDTO> listaestado) {
		Listaestado = listaestado;
	}


	public ArrayList<BeanUbigeoDTO> getListaubigeo() {
		return listaubigeo;
	}


	public void setListaubigeo(ArrayList<BeanUbigeoDTO> listaubigeo) {
		this.listaubigeo = listaubigeo;
	}


	public BeanUbigeoDTO getUbigeo() {
		return ubigeo;
	}


	public void setUbigeo(BeanUbigeoDTO ubigeo) {
		this.ubigeo = ubigeo;
	}


	public ArrayList<BeanDetalleMaestraDTO> getListacargo() {
		return listacargo;
	}


	public void setListacargo(ArrayList<BeanDetalleMaestraDTO> listacargo) {
		this.listacargo = listacargo;
	}


	public ArrayList<BeanMaestraDTO> getListperfil() {
		return listperfil;
	}


	public void setListperfil(ArrayList<BeanMaestraDTO> listperfil) {
		this.listperfil = listperfil;
	}
	
	
	
	
	

}
